﻿using IM.Easy.Core.Configuration;
using SqlSugar;

namespace IM.Easy.Api.Options
{
    public class DbConnection : IConfigurable
    {
        /// <summary>
        /// 数据库集合
        /// </summary>
        public List<DbConnectionConfig> ConnectionConfigs { get; set; }

    }


    /// <summary>
    /// 数据库连接配置
    /// </summary>
    public sealed class DbConnectionConfig : ConnectionConfig
    {
        /// <summary>
        /// 数据库设置
        /// </summary>
        public DbSettings DbSettings { get; set; }

        /// <summary>
        /// 表设置
        /// </summary>
        public TableSettings TableSettings { get; set; }

        /// <summary>
        /// 种子设置
        /// </summary>
        public SeedSettings SeedSettings { get; set; }
    }

    /// <summary>
    /// 数据库设置
    /// </summary>
    public sealed class DbSettings
    {
        /// <summary>
        /// 启用库表初始化
        /// </summary>
        public bool EnableInitDb { get; set; }

        /// <summary>
        /// 启用库表差异日志
        /// </summary>
        public bool EnableDiffLog { get; set; }

        /// <summary>
        /// 启用驼峰转下划线
        /// </summary>
        public bool EnableUnderLine { get; set; }
    }

    /// <summary>
    /// 表设置
    /// </summary>
    public sealed class TableSettings
    {
        /// <summary>
        /// 启用表初始化
        /// </summary>
        public bool EnableInitTable { get; set; }

        /// <summary>
        /// 启用表增量更新
        /// </summary>
        public bool EnableIncreTable { get; set; }
    }

    /// <summary>
    /// 种子设置
    /// </summary>
    public sealed class SeedSettings
    {
        /// <summary>
        /// 启用种子初始化
        /// </summary>
        public bool EnableInitSeed { get; set; }

        /// <summary>
        /// 启用种子增量更新
        /// </summary>
        public bool EnableIncreSeed { get; set; }
    }
}
